pandas groupby多个字段

您所在的位置:网站首页 python groupby for pandas groupby多个字段

pandas groupby多个字段

2024-07-12 21:40| 来源: 网络整理| 查看: 265

pandas groupby多个字段

pandas groupby多个字段

在数据分析中,经常需要根据多个字段对数据进行分组并进行聚合操作。pandas库提供了groupby函数来实现这一功能。本文将详细介绍如何使用pandas中的groupby函数对数据按照多个字段进行分组,并进行统计、计算等操作。

数据准备

首先,我们先准备一份包含姓名、性别、年龄和分数的数据集,供后续操作使用。

import pandas as pd data = {'Name': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'], 'Gender': ['Female', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female', 'Male'], 'Age': [25, 30, 25, 30, 25, 30, 25, 30], 'Score': [80, 90, 85, 88, 82, 91, 87, 89]} df = pd.DataFrame(data) df

运行以上代码,我们得到如下数据集:

Name Gender Age Score 0 Alice Female 25 80 1 Bob Male 30 90 2 Alice Female 25 85 3 Bob Male 30 88 4 Alice Female 25 82 5 Bob Male 30 91 6 Alice Female 25 87 7 Bob Male 30 89 单字段分组

首先,我们来看如何对数据集进行单字段分组。假设我们要按照姓名来计算每个人的平均分数,可以使用如下代码:

# 按照姓名分组,计算平均分数 grouped = df.groupby('Name')['Score'].mean() grouped

运行以上代码,我们得到以下结果:

Name Alice 83.50 Bob 89.50 Name: Score, dtype: float64 多字段分组

接下来,我们将介绍如何对数据集按照多个字段进行分组。假设我们要按照姓名和性别计算每组的平均年龄,可以使用如下代码:

# 按照姓名和性别分组,计算平均年龄 grouped = df.groupby(['Name', 'Gender'])['Age'].mean() grouped

运行以上代码,我们得到以下结果:

Name Gender Alice Female 25 Bob Male 30 Name: Age, dtype: int64 多字段分组并应用多个聚合函数

除了计算单个聚合函数外,我们还可以同时计算多个聚合函数。假设我们要按照姓名和性别计算每组的平均分数和最高分数,可以使用如下代码:

# 按照姓名和性别分组,计算平均分数和最高分数 grouped = df.groupby(['Name', 'Gender'])['Score'].agg(['mean', 'max']) grouped

运行以上代码,我们得到以下结果:

mean max Name Gender Alice Female 83.50 87 Bob Male 89.50 91 多字段分组并应用自定义聚合函数

在实际应用中,我们可能需要自定义聚合函数来满足特定的需求。假设我们要按照姓名和性别计算每组的平均分数,并计算平均分数的平方和,可以使用如下代码:

# 自定义聚合函数 def custom_agg_func(x): return (x**2).sum() # 按照姓名和性别分组,计算平均分数并应用自定义聚合函数 grouped = df.groupby(['Name', 'Gender'])['Score'].agg(['mean', custom_agg_func]) grouped

运行以上代码,我们得到以下结果:

mean custom_agg_func Name Gender Alice Female 83.50 26274 Bob Male 89.50 32014 多字段分组并对结果重命名

有时候,我们在进行多字段分组后,希望对最终的结果进行重命名。假设我们要按照姓名和性别计算每组的平均年龄,并将结果重命名为avg_age,可以使用如下代码:

# 按照姓名和性别分组,计算平均年龄并重命名 grouped = df.groupby(['Name', 'Gender'])['Age'].mean().reset_index() grouped.rename(columns={'Age': 'avg_age'}, inplace=True) grouped

运行以上代码,我们得到以下结果:

Name Gender avg_age 0 Alice Female 25 1 Bob Male 30

通过以上示例,我们学习了如何使用pandas库中的groupby函数对数据按照多个字段进行分组,并进行各种操作。在实陃应用中,可以根据具体需求选择适合的聚合函数和操作,对数据进行更加全面的分析和处理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3